package com.neusoft.thread5timer;

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

/**
 * timer和timertask可以作为实现线程的第三种方式，前两种方式分别是继承Thread类和实现Runnable接口
 * timer是一种线程设施，用于安排后台的线程中执行任务，可安排任务执行一次也可重复执行，可以调度TimerTask
 * TimerTask是一个抽象类，因为实现了Runnable，所以可以实现多线程。
 * 一个timer可以调度多个TimerTask,他会将TimerTask存储到一个队列中，顺序调度。如果想两个TimerTask
 * 并发执行，需要启动两个Timer
 * @author Zhang.Yan
 *
 */
public class TimerTest 
{

	public static void main(String[] args) 
	{
		Timer timer=new Timer();
		timer.schedule(new MyTimerTask2(), 2000);
		while(true)
		{
			System.out.println(new Date().getTime());
			try 
            {
				Thread.sleep(1000);
			} 
            catch (InterruptedException e)
            {
				e.printStackTrace();
			}
		}
	}

}

class MyTimerTask2 extends TimerTask
{

	@Override
	public void run() 
	{
		System.out.println("bomb!");
		new Timer().schedule(new MyTimerTask3(), 3000);
	}
	
}

class MyTimerTask3 extends TimerTask
{

	@Override
	public void run() 
	{
		System.out.println("bomb!");
		new Timer().schedule(new MyTimerTask2(), 2000);
	}
	
}
